#!/usr/bin/python3
import os
# 这个异常类用来判断参数输入的类型是否正确，以及一部分用来进行判断的函数


class ParametersError(Exception):
    def __init__(self, col):
        Exception.__init__(self)
        self.__col = col

    def __str__(self):
        def error_message(x):
            return {
                'bool': '输入参数类型应为Boolean型',
                'file': '该参数应该为文件',
                'dir': '该参数应该为目录',
                'int': '该参数应为int',
            }[x]
        return repr(error_message(self.__col))


def raise_file(file):
    if os.path.isdir(file):                     # 系统只有目录和文件两种类型，如果不是目录当然就是文件，包括没有新建的
        raise ParametersError('file')


def raise_dir(directory):
    if os.path.isfile(directory):
        raise ParametersError('dir')


def raise_bool(boolean):
    positives = ('T', 'TRUE', True)
    negatives = ('F', 'FALSE', False)

    if boolean in positives:
        return True
    elif boolean in negatives:
        return False
    else:
        raise ParametersError('bool')


def raise_int(integer):
    if integer:
        try:
            integer = int(integer)
        except TypeError:
            raise ParametersError('int')

        if not integer or integer <= 0:
            return 0
        elif integer >= 1:
            return integer - 1
    else:
        return None
